"""
创建不调用init方法的实例

问题：
    你想创建一个实例，但是希望绕过执行 __init__() 方法。
解决方案：
    可以通过 __new__() 方法创建一个未初始化的实例。
"""

import time


class Date:
    def __init__(self, year, month, day):
        self.year = year
        self.month = month
        self.day = day

    @classmethod
    def today(cls):
        date = cls.__new__(cls)
        t = time.localtime()
        date.year = t.tm_year
        date.month = t.tm_mon
        date.day = t.tm_mday
        return date

    def __str__(self):
        return "{0.year!s}-{0.month!s}-{0.day!s}".format(self)


def use_date():
    date = Date.today()
    print(date)
    # 输出结果：
    """
    2018-5-13
    """

    now_date = Date.__new__(Date)
    data = {
        "year": 2018,
        "month": 5,
        "day": 12
    }
    for key, value in data.items():
        setattr(now_date, key, value)
    print(now_date)
    # 输出结果：
    """
    2018-5-12
    """


if __name__ == '__main__':
    use_date()
